

function maxLength( arr ) {
    let start=0;
    let end=1;
    let max=0;
    for (let index = 1; index < arr.length; index++) {
        const element = arr[index];
        const uniqArr=arr.slice(start,end);
        if(uniqArr.indexOf(element)>-1){
            start=index-1;
        }else{
            end=index;
        }
        console.log("++++++++++++++++++++++");
        console.log("start:",start);
        console.log("end:",end);
        max=Math.max(max,end-start);
    }
    // console.log("start:",start);
    // console.log("end:",start);
    console.log("max:",max);
}



 //let a=[2,2,3,2,4,5];
 //maxLength2(a);
 /**
 * 查找最长不重复元素的总长度
 * 1.设置坐标start
 * 2.截取start和当前坐标index的元素是唯一的，
 * 如果不是唯一则将start设置为找到重复元素的位置+1而且要加上start的位置
 *  3.每次循环都计算一下没重复的数组长度并且取最长
 * @param arr int整型一维数组 the array
 * @return int整型
 */
function maxLength2( arr ) {
    let start=0;//开始坐标
    let end=0;//结束坐标
    let max=0;//最长长度
    for (let index = 1; index < arr.length; index++) {
        //设置结束坐标
        end=index;

        //当前元素
        const element = arr[index];

        //截取当前唯一的数组
        const uniqArr=arr.slice(start,end);

        //查找重复元素位置
        const foundElementIndex=uniqArr.indexOf(element);
        if(foundElementIndex>-1){

            //找到重复则把坐标移到元素的下标
            start+=foundElementIndex+1;
        }else{
            //计算最长长度
            max=Math.max(max,end-start+1);
        }

    }
    return max;

}

let a=[100,2,300,20010,4,5];
let b=getMaxVal(a);
console.log("max:",b);
/**
 * 获取数组中最大的值
 * @param {Array} arr 
 */
function getMaxVal(arr){
    // let max=0;
    // for (const iterator of arr) {
    //     max=Math.max(iterator,max);
    // }

    // return max;

    return arr.reduce((prv,cur) => Math.max(prv,cur));
}


let str=["a","b","c"].reduceRight((prv,cur)=>prv+cur);
console.log(str);